/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_Studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#pragma once

#include <基本类型.h>
#include <vector>

struct S_变量代码块 {
    std::u16string 类型名称;
    std::u16string 变量名称;
    std::vector<std::u16string> 初始表达式;
};

struct S_函数声明代码 {
    std::u16string 函数名称;
    std::vector<std::u16string> 输入参数;
    std::vector<std::u16string> 输出参数;
};

struct S_函数体代码 {
    std::vector<std::u16string_view> 输入参数;
    std::vector<std::u16string_view> 输出参数;
    std::vector<std::u16string_view> 函数实现;
};

struct S_函数代码块 {
    S_函数声明代码 函数声明;
    std::vector<std::u16string> 函数实现;
};

struct S_成员函数代码块 {
	std::u16string 虚函数表名称;
	std::vector<std::u16string_view> 绑定结构名称;
	S_函数代码块 函数体块;
    //std::vector<S_函数代码块*> 函数体块;
    //std::vector<std::u16string_view> 虚函数列表;
};

struct S_结构代码块 {
    std::u16string 结构名称;
    std::vector<S_变量代码块*> 成员变量;
    //std::vector<S_成员函数代码块*> 成员函数;
};

struct S_函数模块 {
    std::u16string 函数名称;
    std::vector<std::u16string> 输入参数类型;
    std::vector<std::u16string> 输出参数类型;
};

